/*
Copyright (c) 2025 HeZongLun
NahidaProject is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan
PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/

#include "RandomGenerator.h"

NahidaProject::RandomGenerator::RandomGenerator() noexcept {
	GetEngine().seed(std::random_device()());
}

NahidaProject::RandomGenerator::RandomGenerator(unsigned int seed) noexcept {
	GetEngine().seed(seed);
}


unsigned int NahidaProject::RandomGenerator::Next(unsigned int max) noexcept {
	return IntDistribution(0, max)(GetEngine());
}


int NahidaProject::RandomGenerator::NextInt(int min, int max) noexcept {
	return IntDistribution(min, max)(GetEngine());
}

double NahidaProject::RandomGenerator::NextDouble(double min, double max) noexcept {
	return RealDistribution(min, max)(GetEngine());
}

double NahidaProject::RandomGenerator::NextDouble() noexcept {
	return NextDouble(0.0, 1.0);
}